【金猿技术展】千节点线性扩展——STP序列时钟协议
巨杉数据库技术
大数据产业创新服务媒体
——聚焦数据 · 改变商业
SequoiaDB巨杉数据库基于已获专利的全分布式逻辑时钟机制,构建时间序列协议(STP,Sequence Time Protocol)。该协议用于 SequoiaDB内部逻辑时间同步,逻辑时间是SequoiaDB内部用于表示时间,但区别于实际时间的逻辑时间戳。STP维护逻辑时间,提供逻辑时钟服务,而逻辑时间戳主要用于全局事务处理。
分布式数据库架构下要保障事务一致性,必须借助分布式事务,而分布式事务需要分布式数据库提供一个全局统一的事务号,准确标识不同会话的先后顺序。为了保证分布式数据一致性,大多数厂商通过GTM(Global Transaction/Time Manager)解决方案提供统一的事务ID或时钟服务,从而导致每次事务操作都需要跨服务器进行。随着服务器规模的扩展,中心节点的处理能力降低,事务延迟增大,导致系统扩展能力受到极大限制。部分数据库厂商为了保证数据一致性选择放弃2PC提交模式,转而使用1PC加业务补偿策略,但在严格的事务一致性需求场景下将无法应用。
一、STP技术简介
作为业界原生分布式数据库以及新一代分布式数据库的代表,SequoiaDB能够实现分布式交易和ACID与传统技术完全兼容,实现架构和功能特性与传统数据库完全兼容,以提供完整的事务支持和一致性保障,充分保证数据安全,满足核心交易业务的严苛要求。
STP以节点形式部署在SequoiaDB集群的每个机器中,以提供逻辑时钟服务。STP节点分为Server和Client两种角色,各STP Server之间通过Raft保证逻辑时钟的强一致性,避免了强制所有参与节点从GTM中获取唯一ID的步骤,每个数据库节点通过本地的STP Client与主STP Server保持逻辑时钟一致性,并通过专利技术确保逻辑时钟持续向前推进,防止出现冲突。
其特点包括:
●单调递增性:逻辑时钟始终保持单调递增,不受物理时钟回调影响;
●高可靠性:STP Server 一主多备,采用一致性 Raft 协议同步逻辑时钟;
●高可用性:STP Client 与 Server 之间采用 DEBTP(Dynamic Error Based Time Protocol ) 同步逻辑时间,且 Server 与每个 Client 之间都维持独立的动态时间误差,既可以适应网络抖动,也可以满足不同节点的复杂网络状态。时间误差根据时间同步、网络状态进行动态调整;
●高性能:STP Client采用共享内存方式对外提供时间服务,让逻辑时间的获取为本地调用,没有任何网络开销,性能为纳秒级。
STP始终保持单调递增的方法如下:
1. STP Server采用一主多备,通过Raft协议同步ULT,并确保多数派成功。选主时,ULT最大的节点当选主节点;
2. STP Server重启或切主时,会从本地持久化中获取保存的ULT,获取当前的物理时间LRT并重新计算ULT。计算新的ULT时,如果 LRT > ULT + 同步周期则 ULT = LRT,否则 ULT = ULT + 同步周期。新的ULT将通过通过Raft协议同步至其他节点;
3. 当STP Client LLT > ULT时,则该STP Client需要阻塞时间服务,直到ULT >= LLT;
4. 当STP Client故障时,在一个同步周期内STP Client还可以提供时间服务,超时后则不能提供;同时,STP Client提供命令让外部调用促发即时时间同步。
二、基于STP的分布式事务
SequoiaDB 基于STP的分布式事务能够提供完整的事务支持和一致性保障,其特性如下:
●高并发能力:全局事务GID由接入节点本地生成,不存在全局单点瓶颈,没有网络开销,GTID生成在”纳秒“级;
●线性扩展能力:通过增加“接入接点”即可完成事务处理能力的线性扩展;
●高性能:在事务访问记录不冲突时, 或者事务之间不出现逻辑时间冲突时,全局事务退化为本地事务,不引入任何其它成本开销,实现高性能;
●全局一致的可见性:当事务的逻辑时间不出现冲突时,通过逻辑时间的大小比对即可决定相关事务在全局的可见性;当事务的逻辑时间出现冲突时,则引入“可见性仲裁”来决定相关事务在全局的可见性。
三、基于STP的分布式事务校时机制
GTID 由 节点ID + LLT 组成,全局唯一。事务包含开始时间(LTb),预提交时间(LTpc)、提交时间(LTc)以及时间误差(LTError), LTb < LTpc + LTError, LTpc <= LTc。两个事务的可见性判断遵守STP逻辑时间比较规则, Δ取两个事务中最大的时间误差。如果两个事务比较为“≡”,则需要进行“可见性仲裁”。
建立事务校时,事务从 Coordinator 到 Node建立时,Node会从本地 STP Client 获取 LLT进行校时,如果相差大于指定阈值,则需要进行事务重试。该校时用于快速发现节点的时间是否同步。
提交事务校时,在预提交阶段,Node需要从本地STP Client中获取LLT进行校时,如果相差大于指定阈值,则需要进行事务预提交重试。Node在预提交时,需要返回 max(本节点最大的事务开始时间,本节点预提交处理时间)。Coordinator选取 max(Node返回时间,预提交时间) 作为最终的事务提交时间。
四、基于STP的分布式事务“一致性2PC”机制
传统事务2PC机制在“2PC: Commit”阶段发生故障时,会出现有的分区数据已提交而有的分区数据状态不确定的情况。而“一致性2PC”机制会在Pre-Commit时共享事务分区信息,让参与事务的分区相互感知;分区执行Pre-Commit后进入WAIT_COMMIT状态。在 “2PC: Commit”阶段出现分区一致性时,处于WAIT_COMMIT的事务会发起一致性确认来修正事务状态,一致性确认协议自动修复极端情况下事务的一致性。
修正事务状态规则如下:
1)任一分区回滚则回滚;
2)任一分区提交则提交;
3)全部为 WAIT_COMMIT 则提交。
●带队负责人
巨杉数据库STP技术项目的带队负责人是CTO王涛、研发副总裁许建辉、何国明等。
●隶属机构:巨杉数据库
巨杉数据库是一家专注分布式数据库技术研发,以全球数据库的领导者为愿景,以培育数据沃土,提升数据价值为使命的国产自研数据库公司。
巨杉数据库自2011年成立以来,专注数据库技术研发,坚持从零开始打造原生分布式数据库引擎,连续三年入榜 Gartner报告,成为当前新一代主流数据库体系的灯塔厂商。
SequoiaDB巨杉数据库是一款金融级分布式数据库,目前已在超过100家大型银行核心生产业务规模应用,并广泛应用于证券、保险、电信、政府、互联网、交通等领域,企业用户总数超过1000家,应用场景包括分布式在线交易、数据中台、分布式内容管理、实时数据管理等。
巨杉数据库拥有世界顶级的数据库研发团队,分布在广州、深圳、北京等地,核心团队成员主要来自于前IBM DB2北美研发团队和华为分布式储存团队,天生具备企业级基因,同时引入包括阿里在内的国内创新型企业人才,是业界最顶尖的企业级分布式数据库团队。目前公司总人数约为170人。
●民生银行
巨杉数据库采用原生分布式架构,提供完整SQL兼容,完整支持ACID和分布式事务,具备灾备和多活机制。这些对于金融联机交易业务以及互金核心等是不可或缺的核心能力。
●广发银行
存储资源池化、数据库实例化、云化的产品架构,是微服务架构下,SequoiaDB这样的新一代数据库重要的技术特点。
●恒丰银行
面对海量内容数据,具备多类型数据统一管理,存储弹性扩张,高可用和多活的分布式数据库是一种新主流方向。
提示:了解更多相关内容,点击文末左下角“阅读原文”链接可直达该机构官网。
—— / END / ——
以下内容更精彩︾2020年度产业图谱: ●2020中国数据智能产业图谱1.0版 ●从产业图谱看中国2020年数据智能行业的发展态势2020数据猿《#榜样的力量#寻找新冠战“疫”,中国数据智能产业先锋力量》大型公益主题策划活动:
●《看过大佬们发的朋友圈之后,我相信:明天会更好,明年定会春暖花开》条漫
2019数据猿年度金猿榜: